package com.gxa.xiaoucomeshome.mapper;

import com.gxa.xiaoucomeshome.pojo.Manager;
import com.gxa.xiaoucomeshome.pojo.OrderExport;
import com.gxa.xiaoucomeshome.pojo.OrderLog;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @program: IntelliJ IDEA
 * @description:
 * @author: Mr.Wang
 * @create: 2022-06-07 19:11
 **/
public interface ManagerMapper {

    /**
     * 登录
     * @param phone 电话
     * @param pwd   密码
     * @return {@code Manager}
     */
    Manager login(@Param("phone") String phone,@Param("pwd") String pwd);

    /**
     * 统计未审核订单数
     * @return {@code Integer}
     */
    Integer checkOrders();

    /**
     * 统计待分配快递员订单
     * @return {@code Integer}
     */
    Integer countOrders();

    /**
     * 修改密码
     * @param newPwd 新密码
     * @param phone  电话
     * @param pwd    原密码
     * @return {@code Integer}
     */
    Integer update(@Param("newPwd") String newPwd,@Param("phone") String phone,@Param("pwd") String pwd);


    /**
     * 添加材料
     * @param materialNumber 材料号
     * @param materialPrice  材料价格
     * @param materialName   材料名称
     * @return {@code Integer}
     */
    Integer addMaterial(@Param("materialNumber") Integer materialNumber,
                        @Param("materialPrice") Double materialPrice,
                        @Param("materialName") String materialName );

    /**
     * 选择调度表
     * 查找待派送列表
     * @param offset 偏移量
     * @return {@code Map<String, Object>}
     */
    @MapKey("order_id")
    Map<String,Object> selectDispatchList(@Param("offset") Integer offset);

    /**
     * 模糊查询
     * @param str    str
     * @param from   从
     * @param to     来
     * @param offset 抵消
     * @return {@code Map<String, Object>}
     */
    @MapKey("order_id")
    Map<String,Object> selectLikeDispatchList(@Param("offset") Integer offset,@Param("str") String str,
                                              @Param("from") String from,@Param("to") String to);


    /**
     * 选择快递列表
     * @param courier 快递
     * @return {@code List}
     */
    @MapKey("phone")
    Map<String ,Object> selectCourierList(@Param("courier") String courier);

    /**
     * 选择快递
     * @param courierPhone 快递电话
     * @param logid       logids
     */
    void chooseCourier(@Param("courierPhone") String courierPhone, @Param("logid") String logid);

    /**
     * 设置状态
     *
     * @param logid logids
     */
    void setState(@Param("logid") String logid);

    /**
     * 选择检查表
     *
     * @param page 页面
     * @param size 大小
     * @return {@code List<Map<String, Object>>}
     */
    @MapKey("")
    List<Map<String, Object>> selectCheckList(@Param("page") Integer page, @Param("size") Integer size);

    /**
     * 添加条形码
     *
     * @param orderId 订单id
     * @param number  数量
     * @param batch   批处理
     * @param date    日期
     * @return {@code Integer}
     */
    Integer addBarcode(@Param("orderId") String orderId,@Param("number") String number, @Param("batch") String batch, @Param("date") Date date);

    /**
     * 添加订单物流信息
     * @param orderLog 1
     * @return 1
     */
    Integer addOrderLog(OrderLog orderLog);

    /**
     * 查询所有物料名称
     * @return 1
     */
    String[] selectAllMaterialsName();

    /**
     * 选择所有材料
     *
     * @param page 页面
     * @param size 大小
     * @return {@code List<Map<String, Object>>}
     */
    @MapKey("materialName")
    List<Map<String, Object>> selectAllMaterials(@Param("page") Integer page, @Param("size") Integer size);


    /**
     * 搜索材料
     * @param materialName 材料名称
     * @param page         页面
     * @param size         大小
     * @return {@code List<Map<String, Object>>}
     */
    @MapKey("materialName")
    List<Map<String, Object>> searchMaterials(@Param("materialName") String materialName,@Param("page") Integer page, @Param("size") Integer size);


    /**
     * 删除材料
     * @param materialName 材料名称
     * @return {@code Integer}
     */
    Integer deleteMaterial(String[] materialName);

    /**
     * 平台调度
     * @param orderId 订单id
     */
    void platformDispatch(@Param("orderId") String orderId);

    /**
     * 派送列表详情
     * @param orderId 订单id
     * @return {@code Map<String, Object>}
     */
    @MapKey("order_id")
    Map<String,Object> deliveryDetails(@Param("orderId") String orderId);

    /**
     * 平台派单时间
     * @param orderId 订单id
     */
    void setDeliveryTime(@Param("orderId") String orderId);


    /**
     * 设置发货清单
     * @param offset       抵消
     * @param keywords     关键字
     * @param from         从
     * @param to           来
     * @param state       状态
     * @param receipt      收据
     * @param agingProduct 老化产品
     * @return {@code Map<String, Object>}
     */
    @MapKey("order_id")
    Map<String ,Object> setShippingList(@Param("offset") Integer offset,@Param("keywords") String keywords,
                                        @Param("from") String from, @Param("to") String to,
                                        @Param("state") Integer state,@Param("receipt") String receipt,
                                        @Param("agingProduct") String agingProduct);

    /**
     * 设置评论
     * @param remark  备注
     * @param orderId 订单id
     */
    void setRemark(@Param("remark") String remark,@Param("orderId") String orderId);

    /**
     * 删除订单id
     * @param orderId 订单id
     */
    void deleteOrderId(@Param("orderId") String orderId);

    /**
     * 选择详细信息
     * @param orderId 订单id
     * @return {@code Map<String, Object>}
     */
    @MapKey("order_id")
    Map<String ,String> selectDetails(@Param("orderId") String orderId);

    /**
     * 出口订单id
     * @param orderId 订单id
     * @return {@code OrderExport}
     */
    OrderExport orderIdExport(@Param("orderId")String orderId);


    /**
     * 删除检查表
     *
     * @param orderIds 订单id
     */
    void deleteCheckList(String [] orderIds);

    /**
     * 模糊查询待审核订单列表
     * @param offset 抵消
     * @param str    str
     * @param state  状态
     * @param from   从
     * @param to     来
     * @return {@code List<Map<String, Object>>}
     */
    @MapKey("")
    List<Map<String, Object>> serachLikeCheckList(
            @Param("offset")Integer offset,@Param("str") String str,
            @Param("state") Integer state,
            @Param("from") String from,@Param("to") String to);

    /**
     * 添加材料使用
     *
     * @param logId 日志id
     * @param name  名字
     * @param type  类型
     * @param num   全国矿工工会
     */
    void addMaterialUse(@Param("logId")String logId,@Param("materialName")String name
            ,@Param("materilType")String type,@Param("materialNum")Integer num);

    /**
     * 状态改变
     *
     * @param state   状态
     * @param orderId 订单id
     */
    void stateChange(@Param("state")Integer state,@Param("orderId")String orderId);
}
